package com.example.demo.controller;

import com.example.demo.entity.Press;
import com.example.demo.mapper.PressMapper;
import com.example.demo.utils.PagingResult;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@CrossOrigin
@RestController
@RequestMapping("/press") // 控制器的前缀地址
public class PressController {
    @Autowired
    PressMapper pressMapper;

    /**
     * 获取分页的出版社数据
     * @param limit 每页数量
     * @param offset 偏移量
     * @return 分页结果
     */
    @GetMapping("/list")
    public PagingResult<Press> select(
            @RequestParam(required = false, name = "limit", defaultValue = "10") int limit,
            @RequestParam(required = false, name = "offset", defaultValue = "0") int offset
    ) {
        List<Press> pressList = pressMapper.findByPage(offset, limit);
        int total = pressMapper.count();
        return new PagingResult<Press>(pressList, total);
    }

    /**
     * 根据ID获取出版社
     * @param id 出版社ID
     * @return 出版社对象
     */
    @GetMapping("/{id}")
    public Press getById(@PathVariable("id") int id) {
        return pressMapper.findById(id);
    }

    /**
     * 添加出版社
     * @param press 出版社对象
     * @return 影响行数
     */
    @PostMapping("/add")
    public int add(@RequestBody Press press) {
        return pressMapper.insert(press);
    }

    /**
     * 更新出版社
     * @param press 出版社对象
     * @return 影响行数
     */
    @PutMapping("/update")
    public int update(@RequestBody Press press) {
        return pressMapper.update(press);
    }

    /**
     * 删除出版社
     * @param id 出版社ID
     * @return 影响行数
     */
    @DeleteMapping("/delete/{id}")
    public int delete(@PathVariable("id") int id) {
        return pressMapper.delete(id);
    }
    
    /**
     * 获取所有出版社
     * @return 出版社列表
     */
    @GetMapping("/all")
    public List<Press> getAll() {
        return pressMapper.findAll();
    }
}